"""
======================
Author: 柠檬班-小简
Time: 2022/10/10 21:33
Project: py54_编程技术
Company: 湖南零檬信息技术有限公司
======================
"""
import pymysql

"""
要实现哪些方法？
__init__   连接数据库
获取查询结果的方法  
更新操作 - commit,rollback
关闭操作 - cur,conn
"""
class HandleMySql:

    def __init__(self,host,database,user,password,port=3306):
        self.conn = pymysql.connect(
            host=host,
            database=database,
            user=user,
            password=password,
            port=port,
            charset="utf8mb4",
            cursorclass=pymysql.cursors.DictCursor  # 字典格式
        )
        # 2、创建游标
        self.cur = self.conn.cursor()

    def get_query_result_count(self,query_sql,args=None):
        count = self.cur.execute(query_sql, args)
        print("查询影响的条数是：", count)
        return count

    def select_and_get_result(self,query_sql,args=None,many=1):
        """
        :param query_sql: 查询的sql语句。
        :param args: 往sql语句当中要传的参数。列表/元组/字典。
        :param many: -1代表读取所有结果。1代表读取一条结果。>1代表读取指定条数的结果。
        :return: 查询之后的结果。many=1，返回的是字典类型。否则，返回的是列表。
        """
        self.cur.execute(query_sql,args)
        if many == 1:
            res = self.cur.fetchone()
        elif many == -1:
            res = self.cur.fetchall()
        else:
            res = self.cur.fetchmany(size=many)
        return res

    def upate(self,query_sql,args=None):
        try:
            self.cur.execute(query_sql, args)
            self.conn.commit()
        except:
            self.conn.rollback()

    def close_db(self):
        self.cur.close()
        self.conn.close()

if __name__ == '__main__':
    hmy = HandleMySql("47.113.180.81", "yami_shops", "lemon", "lemon123")
    # res = hmy.select_and_get_result('SELECT * FROM tz_user WHERE user_mobile="14745765024"')
    # print(res)
    data = ("13110442930",)
    res = hmy.select_and_get_result('SELECT * FROM tz_user WHERE user_mobile=%s;', data)
    print(res)
    # res = hmy.select_and_get_result('SELECT * FROM tz_user LIMIT 10;', many=2)
    # print(res)
    # 执行其它各种各样的sql语句。。。。。。
    # 等所有的sql语句执行完成之后，没有需求再操作数据库了，则关闭。
    hmy.close_db()